#ifndef MPFILEUTILS_H
#define MPFILEUTILS_H

/******************************
 *
 * 名   称：   文件和文件夹操作公共类
 * 用   途：   获取各类文件路径；获取文件内容；创建、删除、复制、重命名文件；创建文件夹；文件或文件夹检查
 * 作用范围：   公共的
 * 创建时间：   2022-10-03
 * 备   注：   >> 所有函数输出路径相关的字符串将采用系统默认的编码方式。例如：中文简体WINDOWS系统下将采用GBK编码；中文繁体WINDOWS系统下将采用BIG5编码。
 *            >> 所有函数输入路径相关的字符串需确保采用系统默认的编码方式。
 * 参   考：   主要通过BOOST/FILESYSTEM库实现
 * https://blog.csdn.net/cmw2008free/article/details/37082505
 * http://pubs.opengroup.org/onlinepubs/9699919799/utilities/touch.html
 *
 ******************************/

#include "mpConfig.h"
#include <string>
#include "string.h"

namespace MP{
namespace FileUtils{

std::string get_appdir();
std::string get_current_userdata_dir();
std::string get_all_userdata_dir();
std::string get_desktopdir();

bool set_file_content(const std::string & path,const std::string & content,bool overwrite=true);
bool get_file_content(const std::string & path,std::string & content);

void get_file_birthtime(const std::string & path,std::string & strbirthtime);
bool get_file_is_regular_file(const std::string & path);
std::size_t get_file_size(const std::string & path);
std::string get_file_name(const std::string & path,
                          bool is_include_extension = true);

bool remove_file(const std::string & path);
bool remove_dir(const std::string & dir_path);
bool clear_dir(const std::string & dir_path);

bool check_dir_access(const std::string & dir_path);
bool check_file_isexist(const std::string & path);
bool check_dir_isexist(const std::string & dir_path);
bool check_isdir(const std::string& dir_path);

bool touch_file(const std::string & path);
void copy_file(const std::string& from_fp, const std::string& to_fp,bool is_overwrite);
void move_file(const std::string& from_fp, const std::string& to_fp,bool is_overwrite);
void rename_file(const std::string& from_fp, const std::string& to_fp);

bool create_directories(const std::string & dir_path);
bool create_directories_forfile(const std::string & filePath);


}   //END FileUtils
}   //END MP


#endif // MPFILEUTILS_H
